package miage.ecom.commandes;


import java.io.PrintStream;
import java.util.StringTokenizer;
import miage.ecom.Main.Shell;
import miage.ecom.Shell.ShellContext;
import miage.ecom.commandes.ShellCommand;
import miage.ecom.exceptions.BadFormateException;
import miage.ecom.exceptions.IllegalAttributeException;

    

public class LanguageCommandImpl implements ShellCommand
    {
    private ShellContext _context = null;
    public LanguageCommandImpl(ShellContext context)
    {
    _context = context;
    }
    /**
    * renvoie le nom de la commande
    * @return
    */
    @Override
    public String getName()
    {
    String langue = (String) _context.getVar(Shell.LANGUAGE);
    if(langue.equals("fr")) {
    
    return "langue";}
    if(langue.equals("es")) {
    return "idioma";}
    if(langue.equals("it")) {
    return "lingua";}
    else{
    //default anglais
    return "language";
    }
    }
    /**
    * renvoie le nom de la commande
    * @return
    */
    @Override
    public String getUsage()
    {
    String langue = (String) _context.getVar(Shell.LANGUAGE);
   if(langue.equals("fr")) {
    
    return "langue";}
    if(langue.equals("es")) {
    return "idioma";}
    if(langue.equals("it")) {
    return "lingua";}
    else{
    //default anglais
    return "language";
    }
    }
    /**
    * renvoie la description de la commande
    * @return
    */
    @Override
    public String getShortDescription()
    {
    String langue = (String) _context.getVar(Shell.LANGUAGE);
    if(langue.equals("fr")) {
    
    return "positionne la langue utilisée pour les sorties.";}
    if(langue.equals("es")) {
    return "establece el idioma utilizado para la salida.";}
    if(langue.equals("it")) {
    return "imposta la lingua utilizzata per l'output.";}
    else{
    //default anglais
    return "set the language used for output.";
    }
    }
    /**
    * execute la commande
    * @param cmdline
    * @param out
    * @param err
    */
    @Override
    public void execute(String cmdline, PrintStream out, PrintStream err) throws Exception
    {
    StringTokenizer st = new StringTokenizer(cmdline, " ");
    // Ignore cmd
    st.nextToken();
    if(st.countTokens()==1){
    String language = st.nextToken();
    if(("en".equals(language))||("fr".equals(language))||("es".equals(language))||("it".equals(language))){
    Shell.setLanguage(language);
    }else{
    throw new IllegalAttributeException();
    }
    }else{
    throw new BadFormateException();
    }
    }
    } 